home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / fpc / triton / examples / demo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-01-01  |  43.5 KB  |  1,147 lines

  1. PROGRAM Main;
  2.  
  3. (*
  4.  *  OpenTriton -- A free release of the triton.library source code
  5.  *  Copyright (C) 1993-1998  Stefan Zeiger
  6.  *
  7.  *  This program is free software; you can redistribute it and/or modify
  8.  *  it under the terms of the GNU General Public License as published by
  9.  *  the Free Software Foundation; either version 2 of the License, or
  10.  *  (at your option) any later version.
  11.  *
  12.  *  This program is distributed in the hope that it will be useful,
  13.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  *  GNU General Public License for more details.
  16.  *
  17.  *  You should have received a copy of the GNU General Public License
  18.  *  along with this program; if not, write to the Free Software
  19.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  *
  21.  *  demo.c - Triton demo program
  22.  *
  23.  *)
  24.  
  25. uses exec, triton, tritonmacros, utility, amigalib, amigados,workbench, vartags,pastoc;
  26.  
  27. {
  28.    A demo in FPC Pascal using triton.library
  29.  
  30.    This is the main demo for triton.
  31.  
  32.    nils.sjoholm@mailbox.swipnet.se
  33. }
  34.  
  35.  
  36.  
  37. VAR
  38.     App            : pTR_App;
  39.     Main_Project   : pTR_Project;
  40.  
  41.  
  42. Function IntToStr (I : Longint) : String;
  43.  
  44.      Var S : String;
  45.  
  46.      begin
  47.       Str (I,S);
  48.       IntToStr:=S;
  49.      end;
  50.  
  51.  
  52. PROCEDURE do_text;
  53. VAR
  54.     close_me     : BOOLEAN;
  55.     trmsg        : pTR_Message;
  56.     text_project : pTR_Project;
  57.  
  58. BEGIN
  59.     ProjectStart;
  60.     WindowID(5); WindowTitle('Text'); WindowPosition(TRWP_CENTERDISPLAY);
  61.     VertGroupA;
  62.     Space; CenteredText('Normal text');
  63.     Space; CenteredTextH('Highlighted text');
  64.     Space; CenteredText3('3-dimensional text');
  65.     Space; CenteredTextB('Bold text');
  66.     Space; CenteredText('A _shortcut');
  67.     Space; CenteredInteger(42);
  68.     Space; HorizGroupAC;
  69.              Space;
  70.              ClippedText('This is a very long text which is truncated to fit with TRTX_CLIPPED.');
  71.              Space; EndGroup;
  72.     Space; EndGroup; EndProject;
  73.  
  74.     text_project := TR_OpenProject(App,@tritontags);
  75.     IF text_project <> NIL THEN BEGIN
  76.       TR_LockProject(Main_Project);
  77.       close_me := FALSE;
  78.       WHILE NOT close_me DO BEGIN
  79.         TR_Wait(app,0);
  80.         REPEAT
  81.           trmsg := TR_GetMsg(app);
  82.           IF trmsg <> NIL THEN BEGIN
  83.             IF (trmsg^.trm_Project = text_project) THEN BEGIN
  84.                CASE trmsg^.trm_Class OF
  85.                  TRMS_CLOSEWINDOW : close_me := True;
  86.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  87.                ELSE
  88.                END;
  89.             END;
  90.             TR_ReplyMsg(trmsg);
  91.           END;
  92.         UNTIL close_me OR (trmsg = NIL);
  93.       END;
  94.       TR_UnlockProject(Main_Project);
  95.       TR_CloseProject(text_project);
  96.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  97. END;
  98.  
  99.  
  100.  
  101. PROCEDURE do_groups;
  102. VAR
  103.     close_me       : BOOLEAN;
  104.     trmsg          : pTR_Message;
  105.     groups_project : pTR_Project;
  106.  
  107. BEGIN
  108.     ProjectStart;
  109.     WindowTitle('Groups'); WindowPosition(TRWP_CENTERDISPLAY); WindowUnderscore(pas2c('~')); WindowID(1);
  110.  
  111.     HorizGroupA; Space; VertGroupA;
  112.     Space;
  113.  
  114.     NamedFrameBox('TRGR_PROPSHARE (default)'); ObjectBackfillWin; VertGroupA; Space; HorizGroupC;
  115.       Space;
  116.       Button('Short',1);
  117.       Space;
  118.       Button('And much, much longer...',2);
  119.       Space;
  120.       EndGroup; Space; EndGroup;
  121.  
  122.     Space;
  123.  
  124.     NamedFrameBox('TRGR_EQUALSHARE'); ObjectBackfillWin; VertGroupA; Space; HorizGroupEC;
  125.       Space;
  126.       Button('Short',3);
  127.       Space;
  128.       Button('And much, much longer...',4);
  129.       Space;
  130.       EndGroup; Space; EndGroup;
  131.  
  132.     Space;
  133.  
  134.     NamedFrameBox('TRGR_PROPSPACES'); ObjectBackfillWin; VertGroupA; Space; HorizGroupSC;
  135.       Space;
  136.       Button('Short',5);
  137.       Space;
  138.       Button('And much, much longer...',6);
  139.       Space;
  140.       EndGroup; Space; EndGroup;
  141.  
  142.     Space;
  143.  
  144.     NamedFrameBox('TRGR_ARRAY'); ObjectBackfillWin; VertGroupA; Space; LineArray;
  145.       BeginLine;
  146.         Space;
  147.         Button('Short',7);
  148.         Space;
  149.         Button('And much, much longer...',8);
  150.         Space;
  151.         EndLine;
  152.       Space;
  153.       BeginLine;
  154.         Space;
  155.         Button('Not so short',9);
  156.         Space;
  157.         Button('And a bit longer...',10);
  158.         Space;
  159.         EndLine;
  160.       Space;
  161.       BeginLineI;
  162.         NamedSeparator('An independent line');
  163.         EndLine;
  164.       Space;
  165.       BeginLine;
  166.         Space;
  167.         Button('foo bar',12);
  168.         Space;
  169.         Button('42',13);
  170.         Space;
  171.         EndLine;
  172.       EndArray; Space; EndGroup;
  173.  
  174.     Space;
  175.     EndGroup; Space; EndGroup;
  176.     EndProject;
  177.  
  178.     groups_project := TR_OpenProject(App,@tritontags);
  179.     IF groups_project <> NIL THEN BEGIN
  180.       TR_LockProject(Main_Project);
  181.       close_me := FALSE;
  182.       WHILE NOT close_me DO BEGIN
  183.         TR_Wait(app,0);
  184.         REPEAT
  185.           trmsg := TR_GetMsg(app);
  186.           IF trmsg <> NIL THEN BEGIN
  187.             IF (trmsg^.trm_Project = groups_project) THEN BEGIN
  188.                CASE trmsg^.trm_Class OF
  189.                   TRMS_CLOSEWINDOW : close_me := True;
  190.                   TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  191.                ELSE
  192.                END;
  193.             END;
  194.             TR_ReplyMsg(trmsg);
  195.           END;
  196.         UNTIL close_me OR (trmsg = NIL);
  197.       END;
  198.       TR_UnlockProject(Main_Project);
  199.       TR_CloseProject(groups_project);
  200.       END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  201. END;
  202.  
  203. PROCEDURE do_menus;
  204. VAR
  205.     close_me      : BOOLEAN;
  206.     trmsg         : pTR_Message;
  207.     menus_project : pTR_Project;
  208.  
  209. BEGIN
  210.     ProjectStart;
  211.        SetTRTag(TRWI_ID,                 2);
  212.        SetTRTag(TRWI_Title,              longstr('Menus'));
  213.        SetTRTag(TRMN_Title,              longstr('A menu'));
  214.         SetTRTag(TRMN_Item,              longstr('A simple item')); SetTRTag(TRAT_ID, 1);
  215.         SetTRTag(TRMN_Item,              longstr('Another item')); SetTRTag(TRAT_ID, 2);
  216.         SetTRTag(TRMN_Item,              longstr('And now... a barlabel')); SetTRTag(TRAT_ID, 3);
  217.         SetTRTag(TRMN_Item,              TRMN_BARLABEL);
  218.         SetTRTag(TRMN_Item,              longstr('1_An item with a shortcut')); SetTRTag(TRAT_ID, 4);
  219.         SetTRTag(TRMN_Item,              longstr('2_Another one')); SetTRTag(TRAT_ID, 5);
  220.         SetTRTag(TRMN_Item,              longstr('3_And number 3')); SetTRTag(TRAT_ID, 6);
  221.         SetTRTag(TRMN_Item,              TRMN_BARLABEL);
  222.         SetTRTag(TRMN_Item,              longstr('_F1_And under OS3.0: Extended command keys')); SetTRTag(TRAT_ID, 6);
  223.         SetTRTag(TRMN_Item,              longstr('_F2_Another one')); SetTRTag(TRAT_ID, 7);
  224.         SetTRTag(TRMN_Item,              TRMN_BARLABEL);
  225.         SetTRTag(TRMN_Item,              longstr('How do you like submenus?'));
  226.          SetTRTag(TRMN_Sub,              longstr('G_Great!')); SetTRTag(TRAT_ID, 8);
  227.          SetTRTag(TRMN_Sub,              longstr('F_Fine')); SetTRTag(TRAT_ID, 9);
  228.          SetTRTag(TRMN_Sub,              longstr('D_Don''t know')); SetTRTag(TRAT_ID, 10);
  229.          SetTRTag(TRMN_Sub,              longstr('N_Not so fine')); SetTRTag(TRAT_ID, 11);
  230.          SetTRTag(TRMN_Sub,              longstr('P_Puke!')); SetTRTag(TRAT_ID, 12);
  231.  
  232.        SetTRTag(TRMN_Title,              longstr('Another menu'));
  233.         SetTRTag(TRMN_Item,              longstr('This item is ghosted')); SetTRTag(TRMN_Flags, TRMF_DISABLED); SetTRTag(TRAT_ID, 100);
  234.         SetTRTag(TRMN_Item,              TRMN_BARLABEL);
  235.         SetTRTag(TRMN_Item,              longstr('Item 1 is checked')); SetTRTag(TRMN_Flags, TRMF_CHECKED); SetTRTag(TRAT_ID, 13);
  236.         SetTRTag(TRMN_Item,              longstr('Item 2 can be checked, too')); SetTRTag(TRMN_Flags, TRMF_CHECKIT); SetTRTag(TRAT_ID, 14);
  237.  
  238.        SetTRTag(TRMN_Title,              longstr('Ghosted menu'));
  239.        SetTRTag(TRMN_Flags,              TRMF_DISABLED);
  240.         SetTRTag(TRMN_Item,              longstr('Item 1')); SetTRTag(TRAT_ID, 101);
  241.         SetTRTag(TRMN_Item,              longstr('Item 2')); SetTRTag(TRAT_ID, 102);
  242.  
  243.        EndProject;
  244.  
  245.     menus_project := TR_OpenProject(App,@tritontags);
  246.     IF menus_project <> NIL THEN BEGIN
  247.       TR_LockProject(Main_Project);
  248.       close_me := FALSE;
  249.       WHILE NOT close_me DO BEGIN
  250.         TR_Wait(app,0);
  251.         REPEAT
  252.           trmsg := TR_GetMsg(app);
  253.           IF trmsg <> NIL THEN BEGIN
  254.             IF (trmsg^.trm_Project = menus_project) THEN BEGIN
  255.                CASE trmsg^.trm_Class OF
  256.                  TRMS_CLOSEWINDOW : close_me := True;
  257.                  TRMS_ERROR       : WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  258.                  TRMS_NEWVALUE    : writeln('The new value of object ',trmsg^.trm_ID,' is ',trmsg^.trm_Data);
  259.                  TRMS_ACTION      : writeln('Object ',trmsg^.trm_ID,' has triggered an action.');
  260.                ELSE
  261.                END;
  262.             END;
  263.             TR_ReplyMsg(trmsg);
  264.           END;
  265.         UNTIL close_me OR (trmsg = NIL);
  266.       END;
  267.       TR_UnlockProject(Main_Project);
  268.       TR_CloseProject(menus_project);
  269.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  270. END;
  271.  
  272. PROCEDURE do_gadgets;
  273. CONST
  274.   cycle_entries : ARRAY [0..10] OF PChar = (
  275.                   'Entry 0',
  276.                   '1',
  277.                   '2',
  278.                   '3',
  279.                   '4',
  280.                   '5',
  281.                   '6',
  282.                   '7',
  283.                   '8',
  284.                   '9',
  285.                   NIL);
  286.  
  287.  
  288.   mx_entries : ARRAY [0..3] OF PChar = (
  289.                   'Choice 0',
  290.                   'Choice 1',
  291.                   'Choice 2',
  292.                   NIL);
  293. VAR
  294.     close_me        : BOOLEAN;
  295.     trmsg           : pTR_Message;
  296.     gadgets_project : pTR_Project;
  297.  
  298. BEGIN
  299.     ProjectStart;
  300.     SetTRTag(TRWI_ID,  3);
  301.     SetTRTag(TRWI_Title,longstr('Gadgets'));
  302.     SetTRTag(TRWI_Position,TRWP_CENTERDISPLAY);
  303.  
  304.   SetTRTag(TRGR_Vert,                   TRGR_PROPSHARE OR TRGR_ALIGN);
  305.  
  306.     SetTRTag(TROB_Space,                longint(nil));
  307.  
  308.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_CENTER);
  309.       SetTRTag(TROB_Space,              longint(nil));
  310.       SetTRTag(TROB_Line,               TROF_HORIZ);
  311.       SetTRTag(TROB_Space,              longint(nil));
  312.       SetTRTag(TROB_Text,               longint(nil)); SetTRTag(TRAT_Text,  longstr('GadTools')); SetTRTag(TRAT_Flags,  TRTX_TITLE);
  313.       SetTRTag(TROB_Space,              longint(nil));
  314.       SetTRTag(TROB_Line,               TROF_HORIZ);
  315.       SetTRTag(TROB_Space,              longint(nil));
  316.     SetTRTag(TRGR_End,                  longint(nil));
  317.  
  318.     SetTRTag(TROB_Space,                longint(nil));
  319.  
  320.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  321.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  322.         SetTRTag(TROB_Space,            longint(nil));
  323.         SetTRTag(TROB_CheckBox,         longint(nil));
  324.           SetTRTag(TRAT_ID,             1);
  325.           SetTRTag(TRAT_Value,          longint(byte(true)));
  326.       SetTRTag(TRGR_End,                longint(nil));
  327.       SetTRTag(TROB_Space,              longint(nil));
  328.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  329.         SetTRTag(TROB_Text,             longint(nil));
  330.           SetTRTag(TRAT_Text,           longstr('_Checkbox'));
  331.           SetTRTag(TRAT_ID,             1);
  332.         SetTRTag(TROB_Space,            longint(nil));
  333.       SetTRTag(TRGR_End,                longint(nil));
  334.     SetTRTag(TRGR_End,                  longint(nil));
  335.  
  336.     SetTRTag(TROB_Space,                longint(nil));
  337.  
  338.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  339.       SetTRTag(TRGR_Horiz,              TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  340.         SetTRTag(TROB_Space,            longint(nil));
  341.         SetTRTag(TROB_Slider,           longint(nil));
  342.           SetTRTag(TRAT_ID,             4);
  343.           SetTRTag(TRSL_Min,            1);
  344.           SetTRTag(TRSL_Max,            3);
  345.           SetTRTag(TRAT_Value,          1);
  346.       SetTRTag(TRGR_End,                longint(nil));
  347.       SetTRTag(TROB_Space,              longint(nil));
  348.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  349.         SetTRTag(TROB_Text,             longint(nil));
  350.           SetTRTag(TRAT_Text,           longstr('_Slider: '));
  351.           SetTRTag(TRAT_ID,             4);
  352.         SetTRTag(TROB_Text,             longint(nil));
  353.           SetTRTag(TRAT_Value,          1);
  354.           SetTRTag(TRAT_ID,             4);
  355.           SetTRTag(TRAT_MinWidth,       3);
  356.       SetTRTag(TROB_Space,              longint(nil));
  357.       SetTRTag(TRGR_End,                longint(nil));
  358.     SetTRTag(TRGR_End,                  longint(nil));
  359.  
  360.     SetTRTag(TROB_Space,                longint(nil));
  361.  
  362.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  363.       SetTRTag(TRGR_Horiz,              TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  364.         SetTRTag(TROB_Space,            longint(nil));
  365.         SetTRTag(TROB_Scroller,         longint(nil));
  366.           SetTRTag(TRAT_ID,             5);
  367.           SetTRTag(TRAT_Value,          2);
  368.           SetTRTag(TRSC_Total,          7);
  369.           SetTRTag(TRSC_Visible,        3);
  370.       SetTRTag(TRGR_End,                longint(nil));
  371.       SetTRTag(TROB_Space,              longint(nil));
  372.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  373.         SetTRTag(TROB_Text,             longint(nil));
  374.           SetTRTag(TRAT_Text,           longstr('Sc_roller: '));
  375.           SetTRTag(TRAT_ID,             5);
  376.         SetTRTag(TROB_Text,             longint(nil));
  377.           SetTRTag(TRAT_Value,          2);
  378.           SetTRTag(TRAT_ID,             5);
  379.           SetTRTag(TRAT_MinWidth,       3);
  380.       SetTRTag(TROB_Space,              longint(nil));
  381.       SetTRTag(TRGR_End,                longint(nil));
  382.     SetTRTag(TRGR_End,                  longint(nil));
  383.  
  384.     SetTRTag(TROB_Space,                longint(nil));
  385.  
  386.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  387.       SetTRTag(TRGR_Horiz,              TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  388.         SetTRTag(TROB_Space,            longint(nil));
  389.         SetTRTag(TROB_Palette,          longint(nil));
  390.           SetTRTag(TRAT_ID,             3);
  391.           SetTRTag(TRAT_Value,          1);
  392.       SetTRTag(TRGR_End,                longint(nil));
  393.       SetTRTag(TROB_Space,              longint(nil));
  394.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  395.         SetTRTag(TROB_Text,             longint(nil));
  396.           SetTRTag(TRAT_Text,           longstr('_Palette: '));
  397.           SetTRTag(TRAT_ID,             3);
  398.         SetTRTag(TROB_Text,             longint(nil));
  399.           SetTRTag(TRAT_Value,          1);
  400.           SetTRTag(TRAT_ID,             3);
  401.           SetTRTag(TRAT_MinWidth,       3);
  402.       SetTRTag(TROB_Space,              longint(nil));
  403.       SetTRTag(TRGR_End,                longint(nil));
  404.     SetTRTag(TRGR_End,                  longint(nil));
  405.  
  406.     SetTRTag(TROB_Space,                longint(nil));
  407.  
  408.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  409.       SetTRTag(TRGR_Horiz,              TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  410.         SetTRTag(TROB_Space,            longint(nil));
  411.         SetTRTag(TROB_Cycle,            longint(@cycle_entries));
  412.           SetTRTag(TRAT_ID,             6);
  413.           SetTRTag(TRAT_Value,          4);
  414.       SetTRTag(TRGR_End,                longint(nil));
  415.       SetTRTag(TROB_Space,              longint(nil));
  416.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  417.         SetTRTag(TROB_Text,             longint(nil));
  418.           SetTRTag(TRAT_Text,           longstr('C_ycle: '));
  419.           SetTRTag(TRAT_ID,             6);
  420.         SetTRTag(TROB_Text,             longint(nil));
  421.           SetTRTag(TRAT_Value,          4);
  422.           SetTRTag(TRAT_ID,             6);
  423.           SetTRTag(TRAT_MinWidth,       3);
  424.       SetTRTag(TROB_Space,              longint(nil));
  425.       SetTRTag(TRGR_End,                longint(nil));
  426.     SetTRTag(TRGR_End,                  longint(nil));
  427.  
  428.     SetTRTag(TROB_Space,                longint(nil));
  429.  
  430.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  431.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  432.         SetTRTag(TROB_Space,            longint(nil));
  433.         SetTRTag(TROB_Cycle,            longint(@mx_entries));
  434.           SetTRTag(TRAT_ID,             13);
  435.           SetTRTag(TRAT_Value,          1);
  436.           SetTRTag(TRAT_Flags,          TRCY_MX);
  437.       SetTRTag(TRGR_End,                longint(nil));
  438.       SetTRTag(TROB_Space,              longint(nil));
  439.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  440.         SetTRTag(TROB_Text,             longint(nil));
  441.           SetTRTag(TRAT_Text,           longstr('_MX: '));
  442.           SetTRTag(TRAT_ID,             13);
  443.         SetTRTag(TROB_Text,             longint(nil));
  444.           SetTRTag(TRAT_Value,          1);
  445.           SetTRTag(TRAT_ID,             13);
  446.           SetTRTag(TRAT_MinWidth,       3);
  447.         SetTRTag(TROB_Space,            longint(nil));
  448.       SetTRTag(TRGR_End,                longint(nil));
  449.     SetTRTag(TRGR_End,                  longint(nil));
  450.  
  451.     SetTRTag(TROB_Space,                longint(nil));
  452.  
  453.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  454.       SetTRTag(TRGR_Horiz,              TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  455.         SetTRTag(TROB_Space,            longint(nil));
  456.         SetTRTag(TROB_String,           longstr('foo bar'));
  457.           SetTRTag(TRAT_ID,             7);
  458.       SetTRTag(TRGR_End,                longint(nil));
  459.       SetTRTag(TROB_Space,              longint(nil));
  460.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  461.         SetTRTag(TROB_Text,             longint(nil));
  462.           SetTRTag(TRAT_Text,           longstr('S_tring'));
  463.           SetTRTag(TRAT_ID,             7);
  464.       SetTRTag(TROB_Space,              longint(nil));
  465.       SetTRTag(TRGR_End,                longint(nil));
  466.     SetTRTag(TRGR_End,                  longint(nil));
  467.  
  468.     SetTRTag(TROB_Space,                longint(nil));
  469.  
  470.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  471.       SetTRTag(TRGR_Horiz,              TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  472.         SetTRTag(TROB_Space,            longint(nil));
  473.         SetTRTag(TROB_String,           longstr(''));
  474.           SetTRTag(TRAT_Flags,          TRST_INVISIBLE);
  475.           SetTRTag(TRAT_ID,             15);
  476.       SetTRTag(TRGR_End,                longint(nil));
  477.       SetTRTag(TROB_Space,              longint(nil));
  478.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  479.         SetTRTag(TROB_Text,             longint(nil));
  480.           SetTRTag(TRAT_Text,           longstr('Pass_word'));
  481.           SetTRTag(TRAT_ID,             15);
  482.       SetTRTag(TROB_Space,              longint(nil));
  483.       SetTRTag(TRGR_End,                longint(nil));
  484.     SetTRTag(TRGR_End,                  longint(nil));
  485.  
  486.     SetTRTag(TROB_Space,                longint(nil));
  487.  
  488.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  489.       SetTRTag(TRGR_Horiz,              TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  490.         SetTRTag(TROB_Space,            longint(nil));
  491.         SetTRTag(TROB_String,           longstr('0.42'));
  492.           SetTRTag(TRAT_Flags,          TRST_FLOAT);
  493.           SetTRTag(TRST_Filter,         longstr('01234567.,'));
  494.           SetTRTag(TRAT_ID,             16);
  495.       SetTRTag(TRGR_End,                longint(nil));
  496.       SetTRTag(TROB_Space,              longint(nil));
  497.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  498.         SetTRTag(TROB_Text,             longint(nil));
  499.           SetTRTag(TRAT_Text,           longstr('_Octal float'));
  500.           SetTRTag(TRAT_ID,             16);
  501.       SetTRTag(TROB_Space,              longint(nil));
  502.       SetTRTag(TRGR_End,                longint(nil));
  503.     SetTRTag(TRGR_End,                  longint(nil));
  504.  
  505.     SetTRTag(TROB_Space,                longint(nil));
  506.  
  507.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_CENTER);
  508.       SetTRTag(TROB_Space,              longint(nil));
  509.       SetTRTag(TROB_Line,               TROF_HORIZ);
  510.       SetTRTag(TROB_Space,              longint(nil));
  511.       SetTRTag(TROB_Text,               longint(nil)); SetTRTag(TRAT_Text,  longstr('BOOPSI')); SetTRTag(TRAT_Flags,  TRTX_TITLE);
  512.       SetTRTag(TROB_Space,              longint(nil));
  513.       SetTRTag(TROB_Line,               TROF_HORIZ);
  514.       SetTRTag(TROB_Space,              longint(nil));
  515.     SetTRTag(TRGR_End,                  longint(nil));
  516.  
  517.     SetTRTag(TROB_Space,                longint(nil));
  518.  
  519.     SetTRTag(TRGR_Horiz,                TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  520.       SetTRTag(TROB_Space,              longint(nil));
  521.       SetTRTag(TROB_Button,             longint(nil)); SetTRTag(TRAT_ID, 2); SetTRTag(TRAT_Text,  longstr('_Button'));
  522.       SetTRTag(TROB_Space,              longint(nil));
  523.     SetTRTag(TRGR_End,                  longint(nil));
  524.  
  525.     SetTRTag(TROB_Space,                longint(nil));
  526.  
  527.     SetTRTag(TRGR_Horiz,                TRGR_PROPSPACES OR TRGR_ALIGN OR TRGR_CENTER);
  528.       SetTRTag(TROB_Space,              longint(nil));
  529.       SetTRTag(TROB_Text,               longint(nil)); SetTRTag(TRAT_Text,  longstr('_File:')); SetTRTag(TRAT_ID, 10);
  530.       SetTRTag(TROB_Space,              longint(nil));
  531.       SetTRTag(TROB_Button,             TRBT_GETFILE); SetTRTag(TRAT_ID, 10); SetTRTag(TRAT_Text,  longstr(''));
  532.       SetTRTag(TROB_Space,              longint(nil));
  533.       SetTRTag(TROB_Text,               longint(nil)); SetTRTag(TRAT_Text,  longstr('_Drawer:')); SetTRTag(TRAT_ID, 11);
  534.       SetTRTag(TROB_Space,              longint(nil));
  535.       SetTRTag(TROB_Button,             TRBT_GETDRAWER); SetTRTag(TRAT_ID, 11); SetTRTag(TRAT_Text,  longstr(''));
  536.       SetTRTag(TROB_Space,              longint(nil));
  537.       SetTRTag(TROB_Text,               longint(nil)); SetTRTag(TRAT_Text,  longstr('_Entry:')); SetTRTag(TRAT_ID, 12);
  538.       SetTRTag(TROB_Space,              longint(nil));
  539.       SetTRTag(TROB_Button,             TRBT_GETENTRY); SetTRTag(TRAT_ID, 12); SetTRTag(TRAT_Text,  longstr(''));
  540.       SetTRTag(TROB_Space,              longint(nil));
  541.     SetTRTag(TRGR_End,                  longint(nil));
  542.  
  543.     SetTRTag(TROB_Space,                longint(nil));
  544.  
  545.     SetTRTag(TRGR_End,                  longint(nil));
  546.  
  547.   EndProject;
  548.     gadgets_project := TR_OpenProject(App,@tritontags);
  549.     IF gadgets_project <> NIL THEN BEGIN
  550.       TR_LockProject(Main_Project);
  551.       close_me := FALSE;
  552.       WHILE NOT close_me DO BEGIN
  553.         TR_Wait(app,0);
  554.         REPEAT
  555.           trmsg := TR_GetMsg(app);
  556.           IF trmsg <> NIL THEN BEGIN
  557.             IF (trmsg^.trm_Project = gadgets_project) THEN BEGIN
  558.                CASE trmsg^.trm_Class OF
  559.                  TRMS_CLOSEWINDOW : close_me := True;
  560.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  561.                ELSE
  562.                END;
  563.             END;
  564.             TR_ReplyMsg(trmsg);
  565.           END;
  566.         UNTIL close_me OR (trmsg = NIL);
  567.       END;
  568.       TR_UnlockProject(Main_Project);
  569.       TR_CloseProject(gadgets_project);
  570.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  571. END;
  572.  
  573.  
  574. PROCEDURE do_backfill;
  575. VAR
  576.     close_me         : BOOLEAN;
  577.     trmsg            : pTR_Message;
  578.     backfill_project : pTR_Project;
  579.  
  580. BEGIN
  581. ProjectStart;
  582.   WindowID(7); WindowTitle('Backfill'); WindowPosition(TRWP_CENTERDISPLAY);
  583.   VertGroupA;
  584.     Space;  CenteredText('Each window and');
  585.     SpaceS; CenteredText('FrameBox can have');
  586.     SpaceS; CenteredText('one of the following');
  587.     SpaceS; CenteredText('backfill patterns');
  588.     Space;  HorizGroupA;
  589.               Space; GroupBox; ObjectBackfillS; SpaceB;
  590.               Space; GroupBox; ObjectBackfillSA; SpaceB;
  591.               Space; GroupBox; ObjectBackfillSF; SpaceB;
  592.               Space; EndGroup;
  593.     Space;  HorizGroupA;
  594.               Space; GroupBox; ObjectBackfillSB; SpaceB;
  595.               Space; GroupBox; ObjectBackfillA; SpaceB;
  596.               Space; GroupBox; ObjectBackfillAF; SpaceB;
  597.               Space; EndGroup;
  598.     Space;  HorizGroupA;
  599.               Space; GroupBox; ObjectBackfillAB; SpaceB;
  600.               Space; GroupBox; ObjectBackfillF; SpaceB;
  601.               Space; GroupBox; ObjectBackfillFB; SpaceB;
  602.               Space; EndGroup;
  603.     Space; EndGroup; EndProject;
  604.  
  605.     backfill_project := TR_OpenProject(App,@tritontags);
  606.     IF backfill_project <> NIL THEN BEGIN
  607.       TR_LockProject(Main_Project);
  608.       close_me := FALSE;
  609.       WHILE NOT close_me DO BEGIN
  610.         TR_Wait(app,0);
  611.         REPEAT
  612.           trmsg := TR_GetMsg(app);
  613.           IF trmsg <> NIL THEN BEGIN
  614.             IF (trmsg^.trm_Project = backfill_project) THEN BEGIN
  615.                CASE trmsg^.trm_Class OF
  616.                  TRMS_CLOSEWINDOW : close_me := True;
  617.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  618.                ELSE
  619.                END;
  620.             END;
  621.             TR_ReplyMsg(trmsg);
  622.           END;
  623.         UNTIL close_me OR (trmsg = NIL);
  624.       END;
  625.       TR_UnlockProject(Main_Project);
  626.       TR_CloseProject(backfill_project);
  627.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  628. END;
  629.  
  630.  
  631. PROCEDURE do_disabling;
  632. VAR
  633.     close_me          : BOOLEAN;
  634.     trmsg             : pTR_Message;
  635.     disabling_project : pTR_Project;
  636.  
  637. BEGIN
  638.   ProjectStart;
  639.   SetTRTag(TRWI_ID,4); SetTRTag(TRWI_Title,longstr('Disabling')); SetTRTag(TRWI_Position,TRWP_CENTERDISPLAY);
  640.   SetTRTag(TRGR_Vert,                   TRGR_PROPSHARE OR TRGR_ALIGN);
  641.  
  642.     SetTRTag(TROB_Space,                longint(nil));
  643.  
  644.     SetTRTag(TRGR_Horiz,                TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  645.       SetTRTag(TROB_Space,              longint(nil));
  646.       SetTRTag(TROB_CheckBox,           longint(nil)); SetTRTag(TRAT_ID, 1); SetTRTag(TRAT_Value, longint(byte(true)));
  647.       SetTRTag(TROB_Space,              longint(nil));
  648.       SetTRTag(TROB_Text,               longint(nil)); SetTRTag(TRAT_Text,  longstr('_Disabled')); SetTRTag(TRAT_ID, 1);
  649.       SetTRTag(TRGR_Horiz,              TRGR_PROPSPACES);
  650.         SetTRTag(TROB_Space,            longint(nil));
  651.         SetTRTag(TRGR_End,              longint(nil));
  652.       SetTRTag(TRGR_End,                longint(nil));
  653.  
  654.     SetTRTag(TROB_Space,                longint(nil));
  655.  
  656.     SetTRTag(TRGR_Horiz,                TRGR_EQUALSHARE OR TRGR_CENTER);
  657.       SetTRTag(TROB_Space,              longint(nil));
  658.       SetTRTag(TROB_Line,               TROF_HORIZ);
  659.       SetTRTag(TROB_Space,              longint(nil));
  660.       SetTRTag(TRGR_End,                longint(nil));
  661.  
  662.     SetTRTag(TROB_Space,                longint(nil));
  663.  
  664.     SetTRTag(TRGR_Horiz,                TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  665.       SetTRTag(TROB_Space,              longint(nil));
  666.       SetTRTag(TROB_CheckBox,           longint(nil)); SetTRTag(TRAT_Value, longint(byte(true))); SetTRTag(TRAT_ID, 2); SetTRTag(TRAT_Disabled, longint(byte(true)));
  667.       SetTRTag(TROB_Space,              longint(nil));
  668.       SetTRTag(TROB_Text,               longint(nil)); SetTRTag(TRAT_Text,  longstr('_Checkbox')); SetTRTag(TRAT_ID, 2);
  669.       SetTRTag(TROB_Space,              longint(nil));
  670.     SetTRTag(TRGR_End,                  longint(nil));
  671.  
  672.     SetTRTag(TROB_Space,                longint(nil));
  673.  
  674.     SetTRTag(TRGR_Horiz,                TRGR_PROPSHARE OR TRGR_ALIGN OR TRGR_CENTER);
  675.       SetTRTag(TROB_Space,              longint(nil));
  676.       SetTRTag(TROB_Button,             longint(nil)); SetTRTag(TRAT_Text,  longstr('_Button')); SetTRTag(TRAT_ID, 3); SetTRTag(TRAT_Disabled, longint(byte(true)));
  677.       SetTRTag(TROB_Space,              longint(nil));
  678.     SetTRTag(TRGR_End,                  longint(nil));
  679.  
  680.     SetTRTag(TROB_Space,                longint(nil));
  681.  
  682.   SetTRTag(TRGR_End,                    longint(nil));
  683.  
  684.   EndProject;
  685.  
  686.     disabling_project := TR_OpenProject(App,@tritontags);
  687.     IF disabling_project <> NIL THEN BEGIN
  688.       TR_LockProject(Main_Project);
  689.       close_me := FALSE;
  690.       WHILE NOT close_me DO BEGIN
  691.         TR_Wait(app,0);
  692.         REPEAT
  693.           trmsg := TR_GetMsg(app);
  694.           IF trmsg <> NIL THEN BEGIN
  695.             IF (trmsg^.trm_Project = disabling_project) THEN BEGIN
  696.                CASE trmsg^.trm_Class OF
  697.                  TRMS_CLOSEWINDOW : close_me := True;
  698.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  699.                  TRMS_NEWVALUE: BEGIN
  700.                                   IF trmsg^.trm_ID =1 THEN BEGIN
  701.                                     TR_SetAttribute(disabling_project,2,TRAT_Disabled,trmsg^.trm_Data);
  702.                                     TR_SetAttribute(disabling_project,3,TRAT_Disabled,trmsg^.trm_Data);
  703.                                   END;
  704.                                 END;
  705.                ELSE
  706.                END;
  707.             END;
  708.             TR_ReplyMsg(trmsg);
  709.           END;
  710.         UNTIL close_me OR (trmsg = NIL);
  711.       END;
  712.       TR_UnlockProject(Main_Project);
  713.       TR_CloseProject(disabling_project);
  714.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  715. END;
  716.  
  717.  
  718. PROCEDURE do_notification;
  719. VAR
  720.     close_me             : BOOLEAN;
  721.     trmsg                : pTR_Message;
  722.     notification_project : pTR_Project;
  723.  
  724. BEGIN
  725. ProjectStart;
  726.   WindowID(6); WindowTitle('Notification'); WindowPosition(TRWP_CENTERDISPLAY);
  727.   VertGroupA;
  728.     Space;
  729.     NamedSeparatorI('_Checkmarks',1);
  730.     Space;
  731.  
  732.     HorizGroupSAC;
  733.       Space; CheckBox(1);
  734.       Space; CheckBox(1);
  735.       Space; CheckBox(1);
  736.       Space; EndGroup;
  737.  
  738.     Space;
  739.  
  740.     HorizGroupSAC;
  741.       Space; CheckBox(1);
  742.       Space; CheckBox(1);
  743.       Space; CheckBox(1);
  744.       Space; EndGroup;
  745.  
  746.     Space;
  747.     HorizGroupSAC;
  748.       Space; CheckBox(1);
  749.       Space; CheckBox(1);
  750.       Space; CheckBox(1);
  751.       Space; EndGroup;
  752.  
  753.     Space;
  754.     NamedSeparatorI('_Slider and Progress indicator',2);
  755.     Space;
  756.  
  757.     HorizGroupAC;
  758.       Space;
  759.       SliderGadget(0,10,8,2);
  760.       Space;
  761.       Integer3(8);SetTRTag(TRAT_ID,2);SetTRTag(TRAT_MinWidth,3);
  762.       Space;
  763.       EndGroup;
  764.  
  765.     Space;
  766.  
  767.     HorizGroupAC;
  768.       Space;
  769.       TextN('0%');
  770.       Space;
  771.       Progress(10,8,2);
  772.       Space;
  773.       TextN('100%');
  774.       Space;
  775.       EndGroup;
  776.  
  777.     Space;
  778.   EndGroup; EndProject;
  779.  
  780.     notification_project := TR_OpenProject(App,@tritontags);
  781.     IF notification_project <> NIL THEN BEGIN
  782.       TR_LockProject(Main_Project);
  783.       close_me := FALSE;
  784.       WHILE NOT close_me DO BEGIN
  785.         TR_Wait(app,0);
  786.         REPEAT
  787.           trmsg := TR_GetMsg(app);
  788.           IF trmsg <> NIL THEN BEGIN
  789.             IF (trmsg^.trm_Project = notification_project) THEN BEGIN
  790.                CASE trmsg^.trm_Class OF
  791.                  TRMS_CLOSEWINDOW : close_me := True;
  792.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  793.                ELSE
  794.                END;
  795.             END;
  796.             TR_ReplyMsg(trmsg);
  797.           END;
  798.         UNTIL close_me OR (trmsg = NIL);
  799.       END;
  800.       TR_UnlockProject(Main_Project);
  801.       TR_CloseProject(notification_project);
  802.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  803. END;
  804.  
  805.  
  806. PROCEDURE do_lists;
  807. CONST
  808.  
  809.     LVList1Strings : ARRAY[0..18] OF PChar = (
  810.                        'This is a' ,
  811.                        'READ ONLY' ,
  812.                        'Listview' ,
  813.                        'gadget using' ,
  814.                        'the fixed-' ,
  815.                        'width font.' ,
  816.                        '' ,
  817.                        'This window' ,
  818.                        'will remember' ,
  819.                        'its position' ,
  820.                        'even without' ,
  821.                        'the Preferences' ,
  822.                        'system, when' ,
  823.                        'you reopen it,' ,
  824.                        'because it has' ,
  825.                        'got a dimension' ,
  826.                        'structure' ,
  827.                        'attached' ,
  828.                        'to it.');
  829.  
  830.  
  831.  
  832.     LVList2Strings : ARRAY [0..8] OF PChar = (
  833.                        'This is a' ,
  834.                        'SELECT' ,
  835.                        'Listview' ,
  836.                        'gadget.' ,
  837.                        'Use the' ,
  838.                        'numeric' ,
  839.                        'key pad to' ,
  840.                        'move' ,
  841.                        'around.');
  842.  
  843.  
  844.  
  845.     LVList3Strings : ARRAY [0..12] OF PChar = (
  846.                        'This is a' ,
  847.                        'SHOW' ,
  848.                        'SELECTED' ,
  849.                        'Listview' ,
  850.                        'gadget.' ,
  851.                        'This list' ,
  852.                        'is a bit' ,
  853.                        'longer, so' ,
  854.                        'that you' ,
  855.                        'can try the' ,
  856.                        'other' ,
  857.                        'keyboard' ,
  858.                        'shortcuts.');
  859.  
  860. VAR
  861.     close_me      : BOOLEAN;
  862.     trmsg         : pTR_Message;
  863.     lists_project : pTR_Project;
  864.     i             : Longint;
  865.     LVList1,
  866.     LVList2,
  867.     LVList3       : pList;
  868.     MyNode        : pNode;
  869.  
  870. BEGIN
  871.  
  872.     New(LVList1);
  873.     NewList(LVList1);
  874.     FOR i := 0 TO 18 DO BEGIN
  875.         New(MyNode);
  876.         MyNode^.ln_Name := LVList1Strings[i];
  877.         AddTail(LVList1,MyNode);
  878.     END;
  879.  
  880.     New(LVList2);
  881.     NewList(LVList2);
  882.     FOR i := 0 TO 8 DO BEGIN
  883.         New(MyNode);
  884.         MyNode^.ln_Name := LVList2Strings[i];
  885.         AddTail(LVList2,MyNode);
  886.     END;
  887.  
  888.     New(LVList3);
  889.     NewList(LVList3);
  890.     FOR i := 0 TO 12 DO BEGIN
  891.         New(MyNode);
  892.         MyNode^.ln_Name := LVList3Strings[i];
  893.         AddTail(LVList3,MyNode);
  894.     END;
  895.  
  896. ProjectStart;
  897.   WindowID(9); WindowTitle('Lists'); WindowPosition(TRWP_CENTERDISPLAY);
  898.   HorizGroupA; Space; VertGroupA;
  899.     Space;
  900.     NamedSeparatorIN('_Read only',1);
  901.     Space;
  902.     FWListROCN(LVList1,1,0);
  903.     Space;
  904.     NamedSeparatorIN('_Select',2);
  905.     Space;
  906.     ListSelC(LVList2,2,0);
  907.     Space;
  908.     NamedSeparatorIN('S_how selected',3);
  909.     Space;
  910.     ListSSN(LVList3,3,0,1);
  911.     Space;
  912.   EndGroup; Space; EndGroup;
  913.   EndProject;
  914.  
  915.     lists_project := TR_OpenProject(App,@tritontags);
  916.     IF lists_project <> NIL THEN BEGIN
  917.       TR_LockProject(Main_Project);
  918.       close_me := FALSE;
  919.       WHILE NOT close_me DO BEGIN
  920.         TR_Wait(app,0);
  921.         REPEAT
  922.           trmsg := TR_GetMsg(app);
  923.           IF trmsg <> NIL THEN BEGIN
  924.             IF (trmsg^.trm_Project = lists_project) THEN BEGIN
  925.                CASE trmsg^.trm_Class OF
  926.                  TRMS_CLOSEWINDOW : close_me := True;
  927.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  928.                ELSE
  929.                END;
  930.             END;
  931.             TR_ReplyMsg(trmsg);
  932.           END;
  933.         UNTIL close_me OR (trmsg = NIL);
  934.       END;
  935.       TR_UnlockProject(Main_Project);
  936.       TR_CloseProject(lists_project);
  937.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  938. END;
  939.  
  940. PROCEDURE do_appwindow;
  941. VAR
  942.     close_me          : BOOLEAN;
  943.     trmsg             : pTR_Message;
  944.     appwindow_project : pTR_Project;
  945.     chararray         : ARRAY [0..100] OF Char;
  946.     dirname           : PChar;
  947.     temp              : BOOLEAN;
  948.     reqstr            : STRING[200];
  949.  
  950. BEGIN
  951.     dirname := @chararray;
  952. ProjectStart;
  953.   WindowID(8); WindowTitle('AppWindow'); WindowPosition(TRWP_CENTERDISPLAY);
  954.   VertGroupA;
  955.     Space;  CenteredText('This window is an application window.');
  956.     SpaceS; CenteredText('Drop icons into the window or into');
  957.     SpaceS; CenteredText('the icon drop boxes below and see');
  958.     SpaceS; CenteredText('what will happen...');
  959.     Space;  HorizGroupA;
  960.               Space; DropBox(1);
  961.               Space; DropBox(2);
  962.               Space; EndGroup;
  963.     Space; EndGroup; EndProject;
  964.  
  965.   appwindow_project := TR_OpenProject(App,@tritontags);
  966.     IF appwindow_project <> NIL THEN BEGIN
  967.       TR_LockProject(Main_Project);
  968.       close_me := FALSE;
  969.       WHILE NOT close_me DO BEGIN
  970.         TR_Wait(app,0);
  971.         REPEAT
  972.           trmsg := TR_GetMsg(app);
  973.           IF trmsg <> NIL THEN BEGIN
  974.             IF (trmsg^.trm_Project = appwindow_project) THEN BEGIN
  975.                CASE trmsg^.trm_Class OF
  976.                  TRMS_CLOSEWINDOW : close_me := True;
  977.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  978.                  TRMS_ICONDROPPED:  BEGIN
  979.                                       dirname[0] := #0;
  980.                                       temp := NameFromLock(Longint(pAppMessage(trmsg^.trm_Data)^.am_ArgList^[1].wa_Lock),dirname,100);
  981.                                       temp := AddPart(dirname,(pAppMessage(trmsg^.trm_Data)^.am_ArgList^[1].wa_Name),100);
  982.                                       case trmsg^.trm_ID of
  983.                                          1: reqstr := 'Icon(s) dropped into the left box.' + #9 + 'Name of first dropped icon:' + #10 + '%3' + strpas(dirname);
  984.                                          2: reqstr := 'Icon(s) dropped into the right box.' + #9 + 'Name of first dropped icon:' + #10 + '%3' + strpas(dirname);
  985.                                          ELSE reqstr := 'Icon(s) dropped into the window.' + #9 + 'Name of first dropped icon:' + #10 + '%3' + strpas(dirname);
  986.                                       END;
  987.                                       TR_EasyRequest(App,reqstr,'_Ok',TAGS(
  988.                                                      TREZ_LockProject, longint(appwindow_project),
  989.                                                      TREZ_Title,longstr('AppWindow report'),
  990.                                                      TREZ_Activate,longint(byte(true)),
  991.                                       TAG_END));
  992.                                       
  993.                                     END;
  994.                ELSE
  995.                END;
  996.             END;
  997.             TR_ReplyMsg(trmsg);
  998.           END;
  999.         UNTIL close_me OR (trmsg = NIL);
  1000.       END;
  1001.       TR_UnlockProject(Main_Project);
  1002.       TR_CloseProject(appwindow_project);
  1003.     END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  1004. END;
  1005.  
  1006. PROCEDURE Do_Main;
  1007. VAR
  1008.     trmsg      : pTR_Message;
  1009.     quit       : BOOLEAN;
  1010.     reqstr     : string[255];
  1011.     helpstring : PChar;
  1012.     abouttags  : Pointer;
  1013.  
  1014. BEGIN
  1015.  
  1016.     ProjectStart;
  1017.     BeginRequester('About...',TRWP_CENTERDISPLAY);
  1018.  
  1019.     VertGroupA; Space;  CenteredText3('Triton Demo 2.0');
  1020.               SpaceS; CenteredText('© 1993-1996 by Stefan Zeiger');
  1021.               Space;  HorizSeparator;
  1022.               Space;  CenteredText('This program is using the');
  1023.               SpaceS; CenteredText('Triton GUI creation system');
  1024.               SpaceS; CenteredText('which is © by Stefan Zeiger');
  1025.               Space;  EndGroup;
  1026.  
  1027.     BeginRequesterGads;
  1028.     CenteredButtonRE('_Ok',1);
  1029.     EndRequester;
  1030.  
  1031.     abouttags := CloneTagItems(@tritontags);
  1032.  
  1033.     ProjectStart;
  1034.     WindowID(10); WindowTitle('Triton Demo');
  1035.     WindowPosition(TRWP_CENTERDISPLAY);
  1036.     WindowFlags(TRWF_HELP);
  1037.     QuickHelpOn(1);
  1038.     BeginMenu('Project');
  1039.       MenuItem('?_About...',101);
  1040.       ItemBarlabel;
  1041.       MenuItem('H_Help',102);
  1042.       MenuItemCC('I_QuickHelp',104);
  1043.       ItemBarlabel;
  1044.       MenuItem('Q_Quit',103);
  1045.     VertGroupA;
  1046.       Space;  CenteredText3('T · r · i · t · o · n');
  1047.       Space;  CenteredText3('The object oriented GUI creation system');
  1048.       Space;  CenteredText('Demo program for release 2.0');
  1049.       Space;  CenteredText('Written and © 1993-1997 by Stefan Zeiger');
  1050.       Space;  CenteredText('This demo made in FPC Pascal');
  1051.       Space;  HorizSeparator;
  1052.       Space;  HorizGroupEA;
  1053.               Space; Button('_Gadgets',1); QuickHelp('Show some fancy gadgets');
  1054.               Space; Button('G_roups',2); QuickHelp('Groupies?'+#10+'Huh huh...');
  1055.               Space; Button('_Text',3); QuickHelp('You know what ''text'' means, huh?');
  1056.               Space; EndGroup;
  1057.       Space; HorizGroupEA;
  1058.               Space; Button('_Connections',4); QuickHelp('So you''re super-connected now...');
  1059.               Space; Button('_Backfill',5); QuickHelp('United colors of Triton');
  1060.               Space; Button('_Disabling',6); QuickHelp('To be or not to be');
  1061.               Space; EndGroup;
  1062.       Space; HorizGroupEA;
  1063.               Space; Button('_AppWindow',7); QuickHelp('Demonstrate AppWindow feature');
  1064.               Space; Button('_Menus',8); QuickHelp('A fancy pull-down menu');
  1065.               Space; Button('_Lists',9); QuickHelp('· 4 eggs'+#10+'· 1/2lbs bread'+#10+'· 1l milk'+#9+'%3PS: Don''t be late');
  1066.               Space; EndGroup;
  1067.       Space; EndGroup; EndProject;
  1068.  
  1069.     Main_Project := TR_OpenProject(App,@tritontags);
  1070.     IF Main_Project <> NIL THEN BEGIN
  1071.       quit := FALSE;
  1072.       WHILE NOT quit DO BEGIN
  1073.         TR_Wait(app,0);
  1074.         REPEAT
  1075.           trmsg := TR_GetMsg(app);
  1076.           IF trmsg <> NIL THEN BEGIN
  1077.             IF (trmsg^.trm_Project = Main_Project) THEN BEGIN
  1078.                CASE trmsg^.trm_Class OF
  1079.                  TRMS_CLOSEWINDOW : quit := True;
  1080.                  TRMS_NEWVALUE    : IF (trmsg^.trm_ID=104) THEN TR_SetAttribute(Main_Project,0,TRWI_QuickHelp,trmsg^.trm_Data);
  1081.                  TRMS_ACTION      : BEGIN
  1082.                                       CASE trmsg^.trm_ID OF
  1083.                                           1: do_gadgets;
  1084.                                           2: do_groups;
  1085.                                           3: do_text;
  1086.                                           4: do_notification;
  1087.                                           5: do_backfill;
  1088.                                           6: do_disabling;
  1089.                                           7: do_appwindow;
  1090.                                           8: do_menus;
  1091.                                           9: do_lists;
  1092.                                         101: TR_AutoRequest(App,Main_Project,abouttags);
  1093.                                         102: begin
  1094.                                                 TR_EasyRequest(App,'To get help, move the mouse pointer over' + #10 +
  1095.                                                 'any gadget or menu item and press <Help>'+#10+
  1096.                                                 'or turn on QuickHelp before.','_Ok',TAGS(
  1097.                                                 TREZ_LockProject,longint(Main_Project),
  1098.                                                 TREZ_Title,longstr('Triton help'),
  1099.                                                 TAG_END));
  1100.                                              end;
  1101.                                         103: quit := True;
  1102.                                        END;
  1103.                                     END;
  1104.                  TRMS_HELP        : BEGIN
  1105.                                       helpstring := PChar(TR_GetAttribute(Main_Project,trmsg^.trm_ID,TRDO_QuickHelpString));
  1106.                                       IF helpstring <> NIL THEN BEGIN
  1107.                                          reqstr := 'Help for object ' + IntToStr(trmsg^.trm_ID) + ':' + #10 + '%h' + strpas(helpstring);
  1108.                                       END ELSE BEGIN
  1109.                                          reqstr := 'No help available for object ' + IntToStr(trmsg^.trm_ID);
  1110.                                       END;
  1111.                                       TR_EasyRequest(App,reqstr,'_Ok',TAGS(
  1112.                                                      TREZ_LockProject,longint(Main_Project),
  1113.                                                      TREZ_Title,longstr('Triton help'),
  1114.                                                      TAG_END));
  1115.                                     END;
  1116.                  TRMS_ERROR:        WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  1117.                  ELSE
  1118.                  END;
  1119.             END;
  1120.             TR_ReplyMsg(trmsg);
  1121.           END;
  1122.         UNTIL quit OR (trmsg = NIL);
  1123.       END;
  1124.       TR_CloseProject(Main_Project);
  1125.       FreeTagItems(abouttags);
  1126.       END ELSE WriteLN(TR_GetErrorString(TR_GetLastError(App)));
  1127. END;
  1128.  
  1129. BEGIN
  1130.  
  1131.     App := TR_CreateApp(TAGS(
  1132.               TRCA_Name,longstr('TritonDemo'),
  1133.               TRCA_LongName,longstr('Triton Demo'),
  1134.               TRCA_Version,longstr('2.0'),
  1135.               TAG_DONE));
  1136.     
  1137.     if App <> nil then begin
  1138.        Do_Main;
  1139.        TR_DeleteApp(App);;
  1140.     end;
  1141. END.
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.